USE [AlegroPedidos]
GO
/****** Object:  Trigger [dbo].[trgAprovaExportaPedido]    Script Date: 05/28/2015 15:13:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[trgAprovaExportaPedido] ON [dbo].[tbl_pedido]
FOR UPDATE
AS
  BEGIN
        --variaveis
		declare @ped_status_comercial int ;			--status comercial
        declare @ped_status_financeiro int ;		--status financeiro
        declare @ped_status_final int ;				--status combinado do pedido
        declare @ped_codigo_alegro_pedido int ;		--codigo gerado pelo alegro sistemas
		declare @ped_codigo_singem int;				--codigo restornado do singem
		declare @ped_emissao datetime ;				--data pedido
		declare @codigo_vendedor varchar(2);		--vendedor
		declare @cli_codigo varchar(20);			--cliente

       
        select @ped_status_comercial		= i.ped_status_comercial from inserted i;  
        select @ped_status_financeiro		= i.ped_status_financeiro from inserted i;      
        select @ped_codigo_alegro_pedido 	= i.ped_codigo from inserted i;
        select @ped_status_final 			= i.ped_status from inserted i;
		select @ped_emissao 				= i.ped_emissao from inserted i;
		select @codigo_vendedor 			= i.usu_vendedor_singem from inserted i;
		--select @cli_codigo 				= cast(i.cli_codigo as varchar) from inserted i;

       
        --if update(ped_status_comercial) and update(ped_status_financeiro)
        if (@ped_status_final = 0 and @ped_status_comercial = 1 and @ped_status_financeiro = 1)
		begin
			set @ped_status_final= 1;
        	-- atualiza o status do pedido no singem;
			update tbl_pedido set ped_status = @ped_status_final where ped_codigo = @ped_codigo_alegro_pedido;

			-- retorna o ultimo codigo do pedido do singem mais um
			SELECT @ped_codigo_singem = [Chave]+1 FROM [SingemSQL].[dbo].[NumeracaoPedido];
			select @cli_codigo = cli_codigo from tbl_pedido where ped_codigo = @ped_codigo_alegro_pedido;
            
						
			--atualiza ultimo codigo singem
			update [SingemSQL].[dbo].[NumeracaoPedido] set [Chave] = left(replicate('0',2) + cast(@ped_codigo_singem as varchar),5);			

			-- insere no singem o pedido do AlegroPedidos
			insert into [SingemSQL].[dbo] .[Pedidos] (
												[Chave]												
												,[Cliente]												
												,[Emissao]												
												,[Documento]												
												,[ER]												
												,[Vendedor]												
												,[ComissVendedor]
												,[Emissor] 												
												,[Observacoes]    												
												,[TpRecebimento]
												,[Cancelado]												
												,[Desconto]
												,[DescontoPer]
												,[Entrega]
												,[Atendido] 
												,[Prazo]   
												--,[Bruto]
												--,[Liquido]
												,[Classificacao]
												,[Cotacao]    
												,[Area]												
												,[Prioridade]    
												,[EliminarCarregamento]    
												,[Vias]
												,[Sincronizacao]    
												,[Bloqueado]
												,[Conferencia]
												,[ICMSubst]
												) 
											select
											  (left(replicate('0',2) + cast(@ped_codigo_singem as varchar),5)) as Chave											   											   
											  ,cast(cli_codigo as varchar) as Cliente							
											   ,@ped_emissao as Emissao											   
											   ,(left(replicate('0',2) + cast(@ped_codigo_singem as varchar),5)) as Documento											   
											   ,'T' as ER											   
											   ,cast(usu_vendedor_singem as varchar(2)) as Vendedor											   
											   --,ped_comissao_vendedor as ComissaoVendedor
											   ,(select comissao from [SingemSQL].[dbo].Cad_Vendedor where Vendedor = @codigo_vendedor) as [ComissVendedor]
											   ,ped_emisso as Emissor											   
											   ,ped_observacoes as Observacoes			
											   ,ped_prazo as TpRecebimento		--campo com assunto trocado. O ped_prazo é na verdade  tp_recebimento						   
											   --,ped_tipo_tp_recebimento as TpRecebimento
											   ,ped_cancelado as Cancelado											   
											   --,cast(ped_desconto as varchar(1)) as Desconto											   
											   ,'F' as Desconto
											   ,ped_desconto as [DescontoPer]
											   ,ped_entrega as Entrega
											   ,'F' as Atendido
											   --,ped_prazo as Prazo campo com assunto trocado. O ped_prazo é na verdade  tp_recebimento
											   ,NULL as Prazo
											   --,ped_peso_bruto as Bruto
											   --,ped_peso_liquido as Liquido
											   ,ped_tabela as Classificacao
											   ,'F' as Cotacao
											   ,'' as Area
											   --,cast(ped_prioridade as varchar(2)) as Prioridade
											   ,'01' as Prioridade
											   ,'F' as EliminarCarregamento
											   ,0 as Vias
											   ,CURRENT_TIMESTAMP as Sincronizacao
											   ,'F' as Bloqueado
											   ,'F' as Conferencia
											   ,'F' as ICMSubst 
										from tbl_pedido where ped_codigo = @ped_codigo_alegro_pedido ;
						
	
	insert into [SingemSQL].[dbo] .[MovimentoPedidos] (
				Chave1,
				Data 
				,Produto,
				Quantidade,
				Custo
				,Preco				
				,Vendedor				
				,ComissVendedor				
				,Tipo				
				,Faturado				
				,Cliente				
				,Historico				
				,Documento
				,Unidade				
				,Grupo				
				,Cancelado
				,CCadastro
				,PCadastro
				,ICMS
				,Desconto
				,QuantidadePedida
				,Entrega
				,Referencia
				,Sincronizacao				

	)
		SELECT
		(left(replicate('0',2) + cast(@ped_codigo_singem as varchar),5)) as Chave1	     
		,cast(CONVERT(VARCHAR, @ped_emissao, 103) as datetime) as Data		
        --,convert(varchar,  [pro_codigo]) as Produto		
        ,[pro_codigo] as Produto
        ,cast([pro_quantidade]*- 1 as float) as Quantidade 		
		,cast(0 as float) as Custo
		,dbo.Varchar2float([pro_valor_unitario])  as Preco		
		,cast(@codigo_vendedor as varchar(2)) as Vendedor		
		,dbo.Varchar2float([pro_comissao_vendedor]) as ComissVendedor		
		,'Saída2' as Tipo		
        ,'1' as Faturado		
		,cast(@cli_codigo as varchar) as Cliente
		,'PEDIDO VIA ALEGRO PEDIDOS' as Historico		
		,(left(replicate('0',2) + cast(@ped_codigo_singem as varchar),5)) as Documento
		,[pro_quantidade]*- 1 as Unidade		
		,(SELECT [Grupo] FROM [SingemSQL].[dbo].[Cad_Produtos] where Produto =  [pro_codigo] ) as Grupo		
		,'F' as Cancelado		
		,(SELECT Preco_Tabela FROM [SingemSQL].[dbo].[Cad_Produtos] where Produto = [pro_codigo]) as CCadastro
		,dbo.Varchar2float([pro_valor_unitario]) as PCadastro
		,(SELECT [Aliquota1] FROM [SingemSQL].[dbo].[Cad_ICMS] where UF = (select UF from [SingemSQL].[dbo].Cad_Clientes where Cliente = cast(@cli_codigo as varchar))) as ICMS
		,cast([pro_quantidade]*- 1 as float) as Desconto
		,[pro_quantidade] as QuantidadePedida
		,null as Entrega
		--,convert(varchar, [pro_codigo]) as Referencia   
		,[pro_codigo] as Referencia
		 ,CURRENT_TIMESTAMP as Sincrozincao
		--,[pro_valor_total_produto]
		--,[pro_comissao_cliente]
		--,[pro_ipi] as IPI
		--,[pro_status]
		--,[pro_excluido]       
  FROM [AlegroPedidos] .[dbo]. [tbl_produto] where ped_codigo = @ped_codigo_alegro_pedido;    

		end
	--print CONVERT(VARCHAR(23), @ped_emissao, 121)

	end
